@哈哈鱼
1年前 提问
1个回答

渗透测试中通常使用哪些扫描方法检测端口开放性

上官雨宝
1年前

渗透测试中通常使用以下扫描方法检测端口开放性:

  • TCP端口扫描:向目标主机的指定端口建立一个TCP全连接过程,即完成三次握手过程,从而确定目标端口是否已激活或正在监听。这是一种最基本的,也是最简单的扫描方式。但通常也会留下日志,容易被发现。

  • TCP SYN扫描:向目标端口发送一个SYN数据包,如果应答是RST,说明端口是关闭的;如果应答中包含SYN和ACK,说明目标端口处于监听状态。使用SYN扫描并不完成三次握手过程,真正实现正常的TCP全连接,所以这种技术通常被称为半连接扫描。由于很少有站点会记录这种连接,所以SYN扫描也被称为半公开或秘密扫描。

  • TCP FIN扫描:对于一些操作系统,当FIN数据包到达一个关闭的端口时,会返回一个RST数据包;当端口开放时,这种数据包被忽略,不作任何应答,从而可以判断端口状态。防火墙和包过滤器会监视SYN数据包,而使用FIN数据包有时能够穿过防火墙和包过滤器,所以,这种方法较SYN扫描更为隐蔽。

  • NULL扫描:发送一个没有任何标志的TCP包到目标端口,称为NULL扫描。根据RFC 793中的连接状态图和规定,如果目标端口是关闭状态,应该返回一个RST数据包。

  • Xmas tree扫描(圣诞树扫描):向目标端口发送一个标记为FIN、URG和PUSH的数据包,根据RFC793,如果目端口是关闭状态,那么应该返回一个RST数据包。

  • UDP扫描:按照UDP协议,当UDP数据包到达目标端口时,无论该端口是否开放,目标主机都不作任何应答,即打开的端口不会回送确认数据包、关闭的端口不会回送错误数据包。然而,当数据包到达一个关闭的端口时,大部分主机会返回一个ICMP_PORT_UNREACH的错误信息数据包,据此可以判定该端口是关闭的,除此之外的其他端口是打开的。